import pygame
import sys
class Ship(pygame.sprite.Sprite):
    def __init__(self, ai_settings, screen):
        """初始化飞船并设置其初始位置"""
        super().__init__()
        self.screen = screen
        self.ai_settings = ai_settings

        # 加载飞船图像并获取其外接矩形
        self.image = pygame.image.load("D:/game_program/Alien_Invasion/飞机1级.png")
        self.rect = self.image.get_rect()       # 飞船外接矩形
        self.screen_rect = screen.get_rect()    # 屏幕外接矩形

        # 将每艘新飞船放在屏幕底部中央
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
        # 在飞船的属性center中储存小数值
        self.center_x = float(self.rect.centerx)
        self.center_y = float(self.rect.centery)

        # 移动标志
        self.moving_right = False
        self.moving_left = False
        self.moving_up = False
        self.moving_down = False

        # 开火标识
        self.ship_fire = False

        # 初始hp
        self.health = 5

    def reset_position(self):
        """重置飞船到初始位置"""
        self.rect.centerx = self.screen_rect.centerx
        self.rect.bottom = self.screen_rect.bottom
        self.center_x = float(self.rect.centerx)
        self.center_y = float(self.rect.centery)

    def take_damage(self, amount):
        """控制飞船被击中扣除血量逻辑"""
        self.health -= amount
        if self.health <= 0:
            self.explode()

    def explode(self):
        """飞船爆炸逻辑"""
        if self.health <= 0:
            print("GG!!")
            self.ai_settings.ship_limit -= 1
            # 重置飞船位置和血量
            self.reset_position()
            self.health = 5  # 重置血量

    def update(self):
        """根据移动标志调整飞船的位置"""
        # 控制飞船左右移动
        if self.moving_right and self.rect.right < self.screen_rect.right:
            self.center_x += self.ai_settings.ship_speed_factor
        if self.moving_left and self.rect.left > 0:
            self.center_x -= self.ai_settings.ship_speed_factor
        # 控制飞船上下移动
        if self.moving_up and self.rect.top > 0:
            self.center_y -= self.ai_settings.ship_speed_factor
        if self.moving_down and self.rect.bottom < self.screen_rect.bottom:
            self.center_y += self.ai_settings.ship_speed_factor

        # 根据self.center更新rect对象
        self.rect.centerx = self.center_x
        self.rect.centery = self.center_y

    def blitme(self):
        """在指定位置绘制飞船"""
        self.screen.blit(self.image,self.rect)
